ComparatorUtils এর ভূমিকা

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) ComparatorUtils এবং Object Comparison |
161
161

ComparatorUtils হলো অ্যাপাচি কমন্স কালেকশনস লাইব্রেরির একটি ইউটিলিটি ক্লাস, যা Comparator (তুলনাকারী)-এর বিভিন্ন কার্যকর অপারেশন সরবরাহ করে। এটি জাভার বিল্ট-ইন Comparator-এর সীমাবদ্ধতা কাটিয়ে তুলনামূলকভাবে উন্নত ফিচার প্রদান করে।


ComparatorUtils এর প্রধান ফিচার

  1. Chain Comparators (চেইনিং করা): একাধিক কম্পারেটরকে একত্রে চেইন করা।
  2. Null Handling (নাল হ্যান্ডলিং): নাল মানের তুলনামূলক সাপোর্ট প্রদান করা।
  3. Reverse Comparator (উল্টো ক্রম): একটি Comparator-এর ক্রম উল্টে দেওয়া।
  4. Fixed Comparator (ফিক্সড অর্ডার): নির্দিষ্ট ক্রম সংরক্ষণ করা।
  5. Natural Order Comparator (প্রাকৃতিক ক্রম): একটি প্রাকৃতিক অর্ডার তৈরির জন্য সাপোর্ট।

ComparatorUtils ব্যবহার

উদাহরণ ১: প্রাকৃতিক ক্রম এবং উল্টো ক্রম

import org.apache.commons.collections4.ComparatorUtils;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class NaturalOrderExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(5, 2, 8, 1, 9);

        // প্রাকৃতিক ক্রম
        Collections.sort(numbers, ComparatorUtils.naturalComparator());
        System.out.println("Natural Order: " + numbers);

        // উল্টো ক্রম
        Collections.sort(numbers, ComparatorUtils.reversedComparator(ComparatorUtils.naturalComparator()));
        System.out.println("Reverse Order: " + numbers);
    }
}

আউটপুট:

Natural Order: [1, 2, 5, 8, 9]
Reverse Order: [9, 8, 5, 2, 1]

উদাহরণ ২: চেইন কম্পারেটর

Chain Comparator ব্যবহার করে একাধিক শর্তের ভিত্তিতে ডেটা সাজানো যায়।

import org.apache.commons.collections4.ComparatorUtils;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

class Employee {
    String name;
    int age;

    public Employee(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return name + " (" + age + ")";
    }
}

public class ChainComparatorExample {
    public static void main(String[] args) {
        List<Employee> employees = Arrays.asList(
            new Employee("John", 25),
            new Employee("Alice", 30),
            new Employee("Bob", 25),
            new Employee("Eve", 35)
        );

        // প্রথমে বয়স অনুযায়ী, তারপর নাম অনুযায়ী সাজানো
        Comparator<Employee> ageComparator = Comparator.comparingInt(e -> e.age);
        Comparator<Employee> nameComparator = Comparator.comparing(e -> e.name);

        Comparator<Employee> chainComparator = ComparatorUtils.chainedComparator(ageComparator, nameComparator);

        employees.sort(chainComparator);

        System.out.println("Sorted Employees: " + employees);
    }
}

আউটপুট:

Sorted Employees: [Bob (25), John (25), Alice (30), Eve (35)]

উদাহরণ ৩: Null হ্যান্ডলিং

Null Handling Comparator দিয়ে নাল মানগুলো সাজানোর সময় কাস্টম অর্ডার সেট করা যায়।

import org.apache.commons.collections4.ComparatorUtils;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class NullHandlingExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", null, "Bob", "Eve", null);

        // Null প্রথমে রাখে
        Collections.sort(names, ComparatorUtils.nullLowComparator(Comparator.naturalOrder()));
        System.out.println("Null Low Order: " + names);

        // Null শেষে রাখে
        Collections.sort(names, ComparatorUtils.nullHighComparator(Comparator.naturalOrder()));
        System.out.println("Null High Order: " + names);
    }
}

আউটপুট:

Null Low Order: [null, null, Alice, Bob, Eve]
Null High Order: [Alice, Bob, Eve, null, null]

উদাহরণ ৪: ফিক্সড অর্ডার Comparator

Fixed Order Comparator দিয়ে নির্দিষ্ট ক্রম অনুসারে ডেটা সাজানো যায়।

import org.apache.commons.collections4.ComparatorUtils;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class FixedOrderExample {
    public static void main(String[] args) {
        List<String> items = Arrays.asList("Banana", "Apple", "Orange", "Grapes");

        // নির্দিষ্ট ক্রম: Apple -> Orange -> Banana -> Grapes
        ComparatorUtils.FixedOrderComparator<String> fixedOrder = new ComparatorUtils.FixedOrderComparator<>(
            Arrays.asList("Apple", "Orange", "Banana", "Grapes")
        );

        Collections.sort(items, fixedOrder);
        System.out.println("Fixed Order: " + items);
    }
}

আউটপুট:

Fixed Order: [Apple, Orange, Banana, Grapes]

ComparatorUtils এর সুবিধা

  1. কোড সরলীকরণ: জটিল Comparator তৈরির প্রয়োজনীয়তা কমায়।
  2. রিইউজেবল: একবার তৈরি করা Comparator বিভিন্ন জায়গায় ব্যবহার করা যায়।
  3. Null Friendly: Null Handling এর মাধ্যমে ডেটা ম্যানিপুলেশন সহজ করে।
  4. চেইনিং সাপোর্ট: একাধিক Comparator এর যৌথ ব্যবহার সম্ভব।

সারাংশ

ComparatorUtils অ্যাপাচি কমন্স কালেকশনস লাইব্রেরির একটি কার্যকর ইউটিলিটি, যা জাভার ডেটা সাজানোর প্রক্রিয়াকে সহজতর এবং উন্নত করে। এটি চেইনিং, নাল হ্যান্ডলিং, এবং কাস্টম ক্রম তৈরির মতো কাজগুলোর জন্য আদর্শ সমাধান প্রদান করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion